home *** CD-ROM | disk | FTP | other *** search
- Moe: Mandelbrot Orbital Exploration
- ===================================
- (C) 1993 Brian Boese
- All Rights Reserved
-
- Moe is freeware. Distribute it freely. I only ask that you try it out for a
- little while, and then send a postcard telling me what you think of it. See
- "Registration" below for more details.
-
- Requirements: IBM PC or Compatible
- DOS 3.3 or higher
- EGA, VGA, or SuperVGA video card
- Recommended: Mouse
- Math co-processor
-
- Included in this archive:
- moe.exe moe.doc moe.cfg mand.pic
- 8rain.map basic.map bluein.map blues.map
- default.map gamma2.map goodega.map greenin.map
- neon.map redin.map volcano.map
-
- Also included in the registered version: (the complete source code)
- egavga.obj moe.pas mouselib.pas mouselib.tpu
- mouslib8.zip svga256m.obj svgabg40.zip
-
- This program was inspired in part by the wonderful program by those people in
- the Stone Soup group, FractInt. I wanted a simpler way to view the orbitals
- of points chosen from inside or outside the Mandelbrot set. I looked at the
- program Forb, but it wasn't quite sophisticated enough for what I wanted to
- do, and so here is Moe.
-
- For those people not already fractally inclined, the Mandelbrot set is more
- than a nifty design on a T-shirt. It is a mathematically defined object
- which shows how chaotic behaviour can arise from very simple rules. The
- rules for the Mandelbrot set are as follows:
-
- Any point 'c' in the complex plane is either in the Mandelbrot
- set or not. Start with z=0, and then iterate the function
- "z becomes z*z + c" for a while. If z manages to go beyond a
- certain boundary, then the initial point c was not in the set.
- Otherwise the point c _might_ be in the Mandelbrot set.
-
- The complex plane is just a two-dimensional 'set' of numbers, which you can
- imagine correspond to physical points on your monitor. A complex number
- looks like 'a + bi', where both a and b are real numbers, and i is the square
- root of -1. In other words, i times i is -1.
-
- Don't worry if you don't really understand this little bit of math... I know
- it might look a little strange. (After all, your teachers probably always
- told you that negative numbers don't have roots. And then again, your pocket
- calculator will just show a big E instead of an answer.) But when numbers
- are defined in this way, magic can happen! All the ingredients are there for
- the highly complex Mandelbrot set.
-
- Notice that in the definition of the Mandelbrot set above it only tells you
- if the point c is _not_ in the set. You might think that by a simple process
- of elimination you will eventually get the exact set. This is _almost_ true.
- Sometimes an orbit will move into a periodic cycle (the values for z keep
- repeating over and over), in which case that orbit will not diverge, which
- means that it must therefore be part of the Mandelbrot set.
-
- The problem here is that it can take a _long_ time before a cycle emerges
- from the orbit. The Mandelbrot set picture shown by Moe was generated by a
- program I wrote using high-precision math, for about 1,000,000 iterations
- worth for each pixel. The pixels shown in black are part of the Mandelbrot
- set and the rest are not, or at least on the most part they are. About a
- dozen of the pixels shown in black were not able to converge to a cycle
- within the memory of my computer, plus most of the points on the line to the
- left of the set. If you have a binary file viewer, you can tell the
- difference: Each byte in the file corresponds to a point on the 480x480
- Mandelbrot picture. Points which converged to a cycle have a value of 255
- (or $FF), points which have diverged have a value in the range from 1 to 254
- (or $01 to $FE), and all points which neither converged nor diverged have a
- value of 0.
-
- Moe will let you explore one entrancing property of the Mandelbrot set, its
- orbitals. Choose the point c from anywhere on the screen, and all of the z
- values will be animated for you. (At least until the orbits start to diverge
- or converge, or you get a little bored and abort.)
-
- Moe currently requires that you have an EGA, VGA, or SVGA adapter installed.
- If you happen to have some other card, you will have to find another machine
- with one installed to run Moe properly. (Try a friend's house, school, or
- work.) If you don't like this, send me a postcard complaining (see
- Registration below). Enough postcards and I might eventually add in a new
- video mode.
-
- While the program is running, you have several controls at your disposal:
-
- Mouse: Move the cursor to any point on the screen
- Cursor Keys: Move the cursor by one pixel in that direction
- Page Up/Down: Move the cursor 5 pixels up or down
- Home/End: Move the cursor 5 pixels left or right
- 'x', 'y': Set the x- or y-coordinate explicitly
- (*) '1' through '8': Change the x-offset value at that digit
- (*) '!' through '*': Change the y-offset value at that digit
- (*) '0': Clear the x-offset
- (*) ')': Clear the y-offset
- 'c': Load in a different color map
- 'z': zoom in to examine an orbital more closely
- 'p': change the number of passes for redrawing
- 's': toggle sound on and off
- 'e': toggle orbital erasing on and off
- 'm': unzoom back to the original Mandelbrot screen
- 'r': redraw the current screen
- 'q'/Escape: End the Program
- Left Mouse Click: Select that pixel for starting the orbital
- Any other key: Same as Left Mouse Click
-
- (*) These keys are actually user-definable via the command-line or the
- moe.cfg file. See below for the correct syntax. Changing tbe values of
- the x- or y-offset allows you to pick the starting point from anywhere
- within the current pixel. This can be especially useful if you wish to
- explore various orbitals which start from extremely close starting
- positions. Note that these keys are 1-8,0 and shifted 1-8,0 on the
- American keyboard.
-
- The Escape key can also be used to abort an operation in progress. For
- example, when you are entering an exact value for the starting position,
- choosing a place to zoom, or drawing a zoomed screen, you can push the Escape
- key to cancel. When drawing the screen, though, it doesn't really abort. It
- just temporarily sets the number of passes to zero to speed up the redraws.
-
- Syntax: moe [option...]
- options: maxiter=n n is the number of orbitals shown
- 3 <= n <= 3000
- default is 3000
- erase=yes/no erase old orbitals?
- default is yes
- map=filename the name of the color map file to use
- default is "default.map"
- xkey=xxxxxxxxx the 9 keys to use for adjusting the x-offset
- default is "123456780"
- ykey=yyyyyyyyy the 9 keys to use for adjusting the y-offset
- default is "!@#$%^&*)" (American keyboard)
- xoff=n the initial x-offset (as an integer)
- 0 <= n < 62500000
- default is 0
- yoff=n the initial y-offset (as an integer)
- 0 <= n < 62500000
- default is 0
- x=n the first x-coordinate to use
- -2.0 <= n < 1.0
- default is 0.0
- y=n the first y-coordinate to use
- -1.5 <= n < 1.5
- default is 0.0
- sound=yes/no whether or not you want to hear the beeps
- default is yes
- passes=n how many passes you want when zooming
- n must be 1, 2, or 3
- video=mode which type of adapter you want Moe to use
- currently supported are EGA, VGA, and SVGA
- default is VGA
-
- These options may also be given in the moe.cfg file. Any options given on
- the command line override those in the configuration file. If no moe.cfg
- file exists, it will create one with the default settings.
-
- You can create or modify the moe.cfg file to conform to your favorite
- options. For example, if you have a preferred color map or if your keyboard
- does not conform to the default American keyboard, you can set it up to
- automatically use your preferences.
-
- If you are familiar with the excellent program FractInt, you may have a
- favorite color map from there. Moe will allow you to use that color map
- just by telling it to at startup. Included with Moe are several of my
- favorite color maps. They look best in SVGA mode, but 8rain, default, and
- goodega look good on a VGA screen.
-
- Note: If you need to conserve disk space, or if you only have an EGA card,
- then you can delete the file MAND.PIC. If the file is not present, or
- if you are using an EGA adapter, then Moe will calculate the Mandelbrot
- picture on the fly. The reason for not using this file if you have an
- EGA adapter is that the EGA's maximum mode is 640x350, but the picture
- was generated at 640x480.
-
- Registration
- ============
-
- If you use Moe, please send a postcard to the following address:
-
- Brian Boese
- 20 Ormonde Avenue
- St. Catharines, Ontario
- Canada
- L2M 5P2
-
- This is mostly so that I can know approximately how many people are using my
- program, so I can know whether it would be worth my while to make major/minor
- improvements to Moe. But if nobody is using my program then what would be
- the point? This can also be a source of information and comments about Moe
- for myself. What do you like about Moe? What would you like to see
- improved? Added? Removed? What do you hate? Without your comments I can
- only write programs the way I see fit, and you know how programmers can get...
-
- If you like using Moe, or if you find it to provide useful information, then
- I ask that you send a small donation of $5.00 to the above address. This
- program is not FreeWare, but it is freely distributable in an unmodified
- form. (I figure I'm going to get a lot more postcards than checks.) This is
- more or less just a token sum, and I don't think it is too unreasonable.
-
- If you send $10.00, a disk, and a self-addressed-stamped-envelope, then I
- will be happy to send you a copy of the program complete with full source
- code. This will be the most-up-to-date version of the program, of course.
-